package com.xcs.wx.repository.impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcs.wx.constant.DataSourceType;
import com.xcs.wx.domain.ChatRoom;
import com.xcs.wx.domain.dto.ChatRoomDTO;
import com.xcs.wx.domain.vo.ChatRoomVO;
import com.xcs.wx.domain.vo.ExportChatRoomVO;
import com.xcs.wx.mapper.ChatRoomMapper;
import com.xcs.wx.repository.ChatRoomRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 群聊 Repository 实现类
 * 实现ChatRoomRepository接口，提供群聊数据的访问和操作功能
 * 
 * @author xcs
 * @date 2023年12月21日18:38:19
 */
@Repository // 将该类标识为仓储类的组件
@DS(value = DataSourceType.MICRO_MSG_DB) // 指定使用的数据源
public class ChatRoomRepositoryImpl extends ServiceImpl<ChatRoomMapper, ChatRoom> implements ChatRoomRepository {

    /**
     * 查询群聊列表
     *
     * @param chatRoomDTO 查询参数
     * @return 分页后的群聊视图对象
     */
    @Override
    public Page<ChatRoomVO> queryChatRoom(ChatRoomDTO chatRoomDTO) {
        // 调用MyBatis-Plus的查询方法，分页查询群聊
        return getBaseMapper().queryChatRoom
                (new Page<>(chatRoomDTO.getCurrent(), chatRoomDTO.getPageSize()), chatRoomDTO);
    }

    /**
     * 查询群聊详情
     *
     * @param chatRoomName 群聊名称
     * @return 群聊详细信息
     */
    @Override
    public ChatRoom queryChatRoomDetail(String chatRoomName) {
        // 根据群聊名称查询群聊详细信息
        return super.getById(chatRoomName);
    }

    /**
     * 统计群聊数量
     *
     * @return 群聊数量
     */
    @Override
    public int countChatRoom() {
        // 调用Mapper方法统计群聊数量
        return getBaseMapper().countChatRoom();
    }

    /**
     * 导出群聊信息
     *
     * @return 导出信息列表
     */
    @Override
    public List<ExportChatRoomVO> exportChatRoom() {
        // 调用Mapper方法导出群聊信息
        return getBaseMapper().exportChatRoom();
    }
}
